1.2. Data model
The iCalendar data format has a well defined data model. “iCalendar objects” encompass a set of “iCalendar components” each of which contains a set of “iCalendar properties” and possibly other sub-components. An iCalendar property consists of a name, a set of optional parameters (specified as “key-value” pairs) and a value.
iCalendar components include:
“VEVENT” which represents an event
“VTODO” which represents a task or to-do
“VJOURNAL`” which represents a journal entry
“VFREEBUSY” which represents periods of free or busy time information
“VTIMEZONE” which represents a timezone definition (timezone offset and daylight saving rules)
“STANDARD” and “DAYLIGHT” are sub-components of “VTIMEZONE” and provide the onset and offset information
“VALARM” is currently the only defined sub-component for events and tasks and is used to set alarms or reminders
Properties include:
“DTSTART” which represents a start time for a component
“DTEND” which represents an end time for a component
“SUMMARY” which represents a title or summary for a component
“RRULE” which can specify rules for repeating events or tasks (for example, every day, every week on Tuesdays, etc.)
“ORGANIZER” which represents the calendar user who is organizing an event or assigning a task
“ATTENDEE” which represents calendar users attending an event or assigned a task
In addition to this data model and the pre-defined properties, the specification defines how all those are used together to define the semantics of calendar objects and scheduling. The semantics are basically a set of rules stating how all the components and properties are used together to ensure that all iCalendar products can work together to achieve good interoperability. For example, a rule requires that all events must have one and only one “DTSTART” property. The most important part of the iCalendar specification is the semantics of the calendaring model that it represents. The use of text or XML to encode those is secondary.